WAS(tomcat) - DB 구조 서버 한대에서 static resource등 다 함. 문제: Scale Up 만으로는 처리에 한계가 생김
WEB - WAS - DB 구조 정적 컨텐츠 / 동적 컨텐츠 구분 Web server(nginx) / Web Application Server(node.js) 문제: 무정지 배포가 안됨. WAS 부담을 줄이고 싶음 어플리케이션 오류가 서비스 장애로 이어짐
해결: Scale out, Load Balancing
웹서버에서 Load Balancing하는게 제일 쉬운 방법 Apache: process + thread, 설정이 복잡 Nginx: event driven, 설정이 체계적, 빠른 응답
LB 방식: Round Robin / Least Conn. 성능이 비슷할 때 / 리소스 스펙이 불명확할 때
LB에서 중요한것 Health Check, L4 LB / L7 LB OSI처리 가능 계층으로 나뉘는 방식 L4는 TCP까지, L7은 HTTP 요청단위까지 L2 서버만 살아있는지 확인 L4 포트 접속, 서비스 동작까지 확인 L7 실제 어플리케이션 동작하는지 확인
서버는 걍 데이터를 전달해주고 처리하는거라 scale out 하기 쉬움 DB는 저장 상태 관리 때문에 분리가 어렵다. 방식: Active Standby / Read Replica
방법: 두가지
Write Ahead Log 로그를 쌓다가 두번째 서버로 보내서 싱크를 맞춘다.
Streaming agent가 레코드 단위로 계속 보내줌 (좀 더 sync맞출 확률이 높은데 부하가 큼)
Isolation Level: 업데이트 도중 read가 발생하면? 사본에서 읽냐 새로 읽냐? 데이터 정합성 해결 보통 select가 insert/ update/delete 와 연관 없도록 짠다
이제 기본적인 구성완성